#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int pp(long long int a[],int low,int high)
{
    //选取第一个元素作为中间值m，通过两个指针，将数组分为两部分，左边元素小于等于m,右边元素大于等于m
    int n = high;long long int m;
    m=a[low];//用第一个记录做中间
    while(low<high)
    {
        while(low<high && a[high]>=m) --high;//如果high指针位置>=中间数，直到high位置<中间
        a[low]=a[high];//因为上面循环high指针位置<中间，所以把high位置放到low位置 
        while (low<high && a[low]<=m) ++low;//如果low指针位置<=中间数，直到high位置>中间
        a[high]=a[low];
    }
    a[low]=m;
    return low;
}
int p;
void Qsort(long long int a[],int low,int high)
{
    if(low<high)
    {
        p=pp(a,low,high);//调用pp函数对数组a进行分区操作，将数组分为两部分，然后分别对左右两部分进行递归排序
        Qsort(a,low,p-1);
        Qsort(a,p+1,high);
    }
}
int main(int argc, char *argv[])
{
  // 请在此输入您的代码 
  int n,i;double S,avg1,avg,sum=0.0;
  long long a[500010];
  scanf("%d %lf",&n,&S);
  for(i=0;i<n;i++)
  {
      scanf("%lld",a+i);
  }
  avg1=avg=1.0*S/n;
  Qsort(a,0,n-1);//对数组a进行快速排序
  for(i = 0 ; i < n ; i++)
  if( a[i] * (n-i) < S )
  {
      sum+=(a[i]-avg1)*(a[i]-avg1);
      S-=a[i];
  }
  else
  {
      avg=S/(n-i);
      sum+=(avg-avg1)*(avg-avg1)*(n-i);
      break;
  }
  sum=sqrt(sum/n);
  printf("%.4lf",sum);
  return 0;
}